// using System;
// using System.IdentityModel.Tokens.Jwt;
// using System.Security.Claims;
// using System.Threading.Tasks;
// using Microsoft.AspNetCore.Http;
// using Microsoft.Extensions.Options;
// using Newtonsoft.Json;
// using webapi.api.Tokens;

// namespace webapi.api.Tokens
// {
//     public class TokenProviderMiddleware
//     {
//         private readonly RequestDelegate _next;
//         private readonly TokenProviderOptions _options;

//         public TokenProviderMiddleware(
//             RequestDelegate next,
//             IOptions<TokenProviderOptions> options)
//         {
//             _next = next;
//             _options = options.Value;
//         }
//         public Task Invoke(HttpContext context)
//         {
//             // If the request path doesn't match, skip
//             if (!context.Request.Path.Equals(_options.Path, StringComparison.Ordinal))
//             {
//                 return _next(context);
//             }

//             // Request must be POST with Content-Type: application/x-www-form-urlencoded
//             if (!context.Request.Method.Equals("POST")
//                || !context.Request.HasFormContentType)
//             {
//                 context.Response.StatusCode = 400;
//                 return context.Response.WriteAsync("Bad request.");
//             }

//             return GenerateToken(context);
//         }
//     }
// }